Firestore と Typesense で Codable を共有する
実装案
- 複数の Key を作る
- まずは Firestore or Typesense のどちらかの key でパースして、失敗したら他方の key でパースするイメージ。
- 毎回
init(from decoder:) の実装が必要になって、ボイラープレートが増える
FirebaseFirestoreSwift の @DocumentID をやめて、 Typesense からは普通に Decode して、 Firebase からは documentSnapshot.documentID を後から代入する
- こっちを採用した
- 今のところはうまく行っているが、 Firestore から取ってくるときに代入し忘れがあるので注意。
id の nil チェックを行っているところで、 assertionFailure とかを使って実装中に代入忘れに気付けるようにする。
- あと、 Typesense と共有しているオブジェクトについては Repository パターン 等を使って取得するロジックを集約して、 Repository から取得する以外の方法を取らないようにすることでもミスを防げる。
Firestore Firebase Typesense